package com.yht.weblog.web.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

/**
 * @author: yht
 * @date: 2023/12/5 19:16
 * @description: Knife4 配置
 **/

@Configuration
@EnableSwagger2WebMvc
@Profile("dev")// 只在 “dev” 测试环境中生效
public class Knife4jConfig {

    /**
     * 创建一个Docket对象，用于生成API文档
     *
     * @return 返回生成的Docket对象
     */
    @Bean("webApi")
    public Docket creatApiDoc(){
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())  // 为API文档设置元信息
                .groupName("Web 前台接口")  // 设置接口分组名称
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.yht.weblog.web.controller"))  // 选择基于指定包路径的API
                .paths(PathSelectors.any())  // 选择所有路径的API
                .build();
        return docket;
    }


    /**
     * 构建 ApiInfo 对象
     *
     * @return 构建的 ApiInfo 对象
     */
    private ApiInfo buildApiInfo() {
        return new ApiInfoBuilder()
                .title("Weblog 博客前台接口文档")
                .description("Weblog 是一款由 Spring Boot + Vue 3.2 + Vite 4.3 开发的前后端分离博客")
                .termsOfServiceUrl("http://www.yht233.com/")
                .contact(new Contact("yht", "http://www.yht233.com", "1451862365@qq.com"))
                .version("1.0")
                .build();
    }

}
